package org.samples.service;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

import org.samples.model.PagerModel;
import org.samples.model.ExamSubject;
import org.samples.model.ExamUser;
import org.samples.model.vo.ExamTestTypeVO;
import org.samples.model.vo.ExamTestVO;
import org.samples.model.vo.ExamUserVO;
import org.samples.model.vo.ExamScoreVO;
import org.samples.model.vo.ExamSubjectVO;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public interface ITeacherService {
	
	public List<ExamSubject> findAllSubject();
	
	public PagerModel<ExamSubject> findSubjectPage();
	
	public ExamSubject getSubjectById(Integer subId);
	
	public void editSubject(ExamSubject subject) throws Exception;
	
	public void creatSubject(ExamSubject subject) throws Exception;
	
	public void deleteSubject(Integer subId) throws Exception;
	
	public List<String> getAllUserBySubject(Integer subId);
	
	public void saveSubjectStudent(List<String> subjectStudents, Integer subId) throws Exception;
	//--------I am the dividing line---------
	public PagerModel<ExamTestVO> findAllExamTest();
	
	public ExamTestVO getExamTestById(Integer id);
	
	public void editExamTest(ExamTestVO examTest) throws Exception;
	
	public void createExamTest(ExamTestVO examTest) throws Exception;
	
	public void deleteExamTest(Integer id) throws Exception;

	public List<ExamSubjectVO> getSubjectList() throws Exception;

	public List<ExamTestTypeVO> getTestTypeList() throws Exception;
	//--------I am the dividing line---------
	public List<ExamUser> findAllUser();
	
	public PagerModel<ExamUserVO> findUserPage();
	
	public ExamUser getUserById(String userId);
	
	public ExamUser getByUserName(String userName);
	
	public void editUser(ExamUser user) throws Exception;
	
	public void creatUser(ExamUser user) throws Exception;
	
	public void deleteUser(String userId) throws Exception;
	
	public void saveUserByExcel(InputStream inputStream, String postfix) throws IOException;
	//--------I am the dividing line---------
	public PagerModel<ExamScoreVO> getAllScore(Map<String, String> conditionMap);
	
}
